﻿/*
 * @author: wizardc
 */

using System;
using Dou.Utils;

namespace Dou.Operate
{
    /// <summary>
    /// 需要执行的数据
    /// </summary>
    public class OperateData : ICacheable
    {
        /// <summary>
        /// 处理优先级
        /// </summary>
        public int priority;
        
        /// <summary>
        /// 当前处理事项的唯一键值
        /// 相同的键值不会同时都创建 OperateBase 对象执行，但是执行完成后，完成回调都会都会调用
        /// </summary>
        public string key;
        
        /// <summary>
        /// 执行完毕回调
        /// 参数分别为：信息，执行是否成功，执行失败的报错信息
        /// </summary>
        public Action<OperateData, bool, string> onComplete;
        
        public virtual void OnRecycle()
        {
            priority = 0;
            key = null;
            onComplete = null;
        }

        public virtual void OnReuse()
        {
        }
    }
}
